#ifndef _ELEMENTS_ELEMENT_MANAGER_H_
# define _ELEMENTS_ELEMENT_MANAGER_H_

# include "config.h"
# include <SDL/SDL.h>
# include "Utils\\AManager.h"
# include "Utils\\IArgs.h"
# include "Elements\\AElement.h"

NS_BEGIN(SDL)
	NS_BEGIN(ELEMENTS)

	struct ElementArgs : public UTILS::IArgs
	{
	public:
		SDL_Surface* Screen;
		SDL_Event* Event;

	public:
		ElementArgs(SDL_Surface* _screen, SDL_Event* _event);
	private:
		ElementArgs(ElementArgs const&);
	public:
		virtual ~ElementArgs();

	private:
		ElementArgs& operator=(ElementArgs const&);
	};

	class ElementManager : public UTILS::AManager<ELEMENTS::AElement>
	{
	public:
		ElementManager();
	private:
		ElementManager(ElementManager const&);
	public:
		virtual ~ElementManager();

	private:
		ElementManager& operator=(ElementManager const&);

	public:
		virtual void Manage(UTILS::IArgs* _args);
	};

	NS_END(ELEMENTS)
NS_END(SDL)

#endif // _ELEMENTS_ELEMENT_MANAGER_H_
